--== READ ME ==--.txt
texx is a small tool for manipulating textureX files.
It main use is for comparing texture definitions and outputting a single doomtools compatible textureX.txt file containing all unique textures between all the input files. It can also use a iwad as a filter to remove all textures that apear in the iwad.
It has other functions like converting things to doomtools textureX.txt definitions. Extracting from wads, or converting lumps exported from slade for example.
It also has a function where it can read a textureX and then look in a directory and it's subdirs for matching patch files, and copy them to a dir of your choice.
=================================================================
texx -- TEXTUREx / DEUTEX manipulation tool
Six independent modes for building and cleaning up Doom TEXTUREx
definitions and SWANTBLS switch/animation tables. Pick exactly
one mode per run.
CONVERT (-c, --convert)
Turn a single WAD, SLADE TEXTURES file, or DEUTEX texturex.txt
into a clean DoomTools/DEUTEX-style text file. Use this to
normalize one source into the text format the other modes expect.
-c, --convert INPUT file/WAD to convert
-o, --output PATH default: texturex.txt
MERGE (-m, --merge)
Combine several texture sources into one file of unique
definitions -- e.g. stitching multiple community texture packs
into a single set for a megaproject. Output is sorted
alphabetically by texture name; patch layout/order within each
texture is untouched. True duplicates and --filter matches are
written out to a duplicates-<out>.txt side file for review.
-m, --merge IN [IN...] files to merge
-f, --filter IN [IN...] drop anything matching these (e.g. doom2.txt)
--resolveDups also write duplicates-resolved-<out>.txt with
true duplicates renamed uniquely (doesn't touch the
main output)
-o, --output PATH default: unique-textureX.txt
SUBTRACT (-s, --subtract)
Start from one base texturex.txt and strip out any definition
identical (name + layout) to one found in the other inputs or
--filter. Use this to pull IWAD-native textures back out of a
texture file that accidentally included them.
-s, --subtract BASE IN... base file, then files to compare against
-f, --filter IN [IN...] additional definitions to remove
-o, --output PATH default: <base>-subtracted.txt
REMOVE (-rm, --remove)
Like --subtract, but for many files at once, each handled fully
independently -- no merging, no renaming, no cross-file dedup.
Use this to strip IWAD textures out of several map-specific
texture files in one pass, keeping them as separate files.
-rm, --remove IN [IN...] files to clean, each processed on its own
-f, --filter IN [IN...] definitions to remove from every input (required)
-o, --output DIR default: current directory
FIND PATCHES (-fp, --findPatches)
Scan a directory tree and copy out every patch graphic referenced
by a texturex.txt. Use this to collect just the patches a texture
set actually needs out of a much bigger resource folder.
-fp, --findPatches TEXTUREX texture file to read patch names from
-sd, --sourcedir DIR directory to scan recursively (required)
-o, --output DIR default: <input>-patches
ANIMATION MERGE (-a, --animation, --animations)
Merge SWANTBLS/defswani switch + animation definition files
([SWITCHES]/[FLATS]/[TEXTURES]) into one --default file that is
reproduced 100% unchanged. New switches/animations from the
other inputs are appended; anything that conflicts with the
default, or between two inputs, is skipped and written to a
-conflicts.txt side file for manual review instead.
-a, --animation IN [IN...] defswani files to merge in
--default FILE base file, kept 100% unchanged (required)
-o, --output PATH default: merged-defswani.txt
NOTES
Inputs are auto-detected by content, not extension: WAD files
(TEXTURE1/TEXTURE2 + PNAMES), SLADE TEXTURES .txt, or DoomTools/
DEUTEX .txt. --subtract's base and --findPatches's input must be
DoomTools .txt specifically.
Filter semantics (--merge/--subtract/--remove): a definition
identical in name AND layout to a filter entry is dropped; a
definition with the same name but a DIFFERENT layout is kept
under its original name (stock-texture replacement).
Every output enforces AASTINKY (the null texture,
index 0) as the first entry -- moved to the front if present,
or synthesized and inserted if missing entirely. (Not applied
to --merge's duplicates-*.txt diagnostic side files.)
EXAMPLES
texx -c mywad.wad
texx -c slade-export.txt -o texture1.txt
texx -m resource.wad map01.wad -f doom2.wad
texx -m 32in24.txt jimmytex.txt -f doom2.txt --resolveDups
texx -s mytex.txt other.wad -f doom2.wad
texx -rm texture01.txt texture02.txt -f doom2-textures.txt
texx -fp texturex.txt -sd "C:/patches" -o picked
texx -a 32in24-defswani.txt jimmytex-defswani.txt --default doom2-defswani.txt